CC = gcc
LD = gcc
AS = gcc
RM = rm

CFLAGS = -I. -O2
SFLAGS = -S
LDADD=-lm
SOURCES=conway.c
OBJS=conway.o
SOURCES_ORIG=conway_orig.c
OBJS_ORIG=conway_orig.o
OBJS_MIPS=conway_mips.o
CLEANBINS=conway
CLEANOBJS=$(OBJS)
CLEANBINS_ORIG=conway_orig
CLEANOBJS_ORIG=$(OBJS_ORIG)
CLEANBINS_MIPS=conway_mips
CLEANOBJS_MIPS=$(OBJS_MIPS)

.c.o:
	$(CC) $(CFLAGS) -c -g -pg $< -o $@

.S.o:
	$(CC) $(CFLAGS) -c -g -pg $< -o $@

default:	conway

conway: $(OBJS)
	$(LD) $(LDADD) $(OBJS) -pg -o conway
	
benchmark: conway
	./conway < data.txt
	gprof -b conway

conway_orig: $(OBJS_ORIG)
	$(LD) $(LDADD) $(OBJS_ORIG) -pg -o conway_orig
	
benchmark_orig: conway_orig
	./conway_orig < data.txt
	gprof -b conway_orig
	
conway_mips: $(OBJS_MIPS)
	$(LD) $(LDADD) $(OBJS_MIPS) -pg -o conway_mips
	
benchmark_mips: conway_mips
	./conway_mips < data.txt
	gprof -b conway_mips
		
tests: conway
	@./conway < data.txt
	@diff out out_orig --exclude=.svn && echo TEST OK || echo TEST FAIL!!

help:
	@echo Uso
	@echo
	@echo -e make help\\tmuestra esta ayuda
	@echo -e make\\tcompila el programa
	@echo

clean:
	@-$(RM) $(CLEANBINS) $(CLEANOBJS) || true
	@-$(RM) $(CLEANBINS_ORIG) $(CLEANOBJS_ORIG) || true
	@-$(RM) $(CLEANBINS_MIPS) $(CLEANOBJS_MIPS) || true
	
